core: Handle NULL xattrs in packfile generation, throw error on invalid mode
authorColin Walters <walters@verbum.org>
Sun, 4 Dec 2011 18:11:21 +0000 (13:11 -0500)
committerColin Walters <walters@verbum.org>
Sun, 4 Dec 2011 18:12:06 +0000 (13:12 -0500)
src/libostree/ostree-core.c

index 5fd9e9b7b14ba79ab122545c9295e579d0aa19e1..94259ded5e1f96b7fd08e741f8553a4ec8370515 100644 (file)
@@ -584,7 +584,7 @@ ostree_pack_file_for_input (GOutputStream     *output,
   g_variant_builder_add (&pack_builder, "u", GUINT32_TO_BE (gid));
   g_variant_builder_add (&pack_builder, "u", GUINT32_TO_BE (mode));
 
-  g_variant_builder_add (&pack_builder, "@a(ayay)", xattrs);
+  g_variant_builder_add (&pack_builder, "@a(ayay)", xattrs ? xattrs : g_variant_new_array (G_VARIANT_TYPE ("(ayay)"), NULL, 0));
 
   if (S_ISREG (mode))
     {
@@ -605,7 +605,11 @@ ostree_pack_file_for_input (GOutputStream     *output,
       object_size = 0;
     }
   else
-    g_assert_not_reached ();
+    {
+      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+                   "Invalid mode %u", mode);
+      goto out;
+    }
 
   g_variant_builder_add (&pack_builder, "t", GUINT64_TO_BE (object_size));
   pack_variant = g_variant_builder_end (&pack_builder);